SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTPAGO_MASI_I01]      
/*-------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                --*/      
/*---Cliente              : OFISIS                     --*/      
/*---Sistema              : Tesoreria                  --*/      
/*---Mcdulo               : Empresa                    --*/      
/*---Programa             : Grabacicn Cabecera         --*/      
/*---                       Movimiento Bancos (Egresos)--*/      
/*---Script               : tcmovi_b.sql               --*/      
/*---Nombre SP            : SP_TTPAGO_MASI_I01         --*/      
/*---Desarrollado por     : Denis Villacrés P.         --*/      
/*---Fecha Creacicn       : 06/01/2004                 --*/      
/*---Base Datos           : Microsoft Sql Server       --*/      
/*---Versicn              : 2000                       --*/      
/*---Invoca a SP          :                            --*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/        
/*---Modificado 1 por     : Maribel Julca Rodriguez     --*/        
/*---Fecha Modificaci«n   : 20/04/2005                  --*/         
/*---Detalle Modificaci«n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI--*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/        
/*---Modificado 2 por     : Carlos Marquez Escobar  --*/        
/*---Fecha Modificaci«n   : 01/01/2006                  --*/         
/*---Detalle Modificaci«n : Se adiciono Campo Conciliacíon--*/  
/*-------------------------------------------------------*/     
/*-------------------------------------------------------*/        
/*---Modificado 3 por     : Luis Avila Poma			   --*/        
/*---Fecha Modificaci«n   : 26/09/2009                 --*/         
/*---Detalle Modificaci«n : Se cambio Dato tipo de	   --*/
/*---documento, se manda directo del programa de Bancos--*/  
/*---Validacion de documentos (CHEQUES)				   --*/  
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/     
/*---Comentarios                                       --*/      
/*---                                                  --*/      
/*---                                                  --*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/      
/*---Drop Proc SP_TTPAGO_MASI_I01                      --*/      
/*---Grant Execute on SP_TTPAGO_MASI_I01 to public     --*/       
/*---SP_TTPAGO_MASI_I01                                --*/      
/*-------------------------------------------------------*/      
 @ISCO_EMPR   TD_VC_002,       
 @ISCO_USUA_MODI TD_VC_008_USUA,      
 @ISCO_BANC   TD_VC_003,       
 @ISNU_CNTA_BANC TD_VC_020,      
 @ISAA_BNCO   TD_VC_004,       
 @ISMM_BNCO   TD_VC_002,       
 @ISTI_MOVI_BANC TD_VC_001,        
 @ISNU_COMP_BANC TD_VC_008,       
 @IDFE_OPER   TD_DT_001,       
 @ISCO_TIPO_OPER TD_VC_003,       
 @INFA_TIPO_CAMB TD_NU_015_006,       
 @INIM_MOVI   TD_NU_016_004,       
 @ISSI_SOLO_BANC TD_VC_001_SINO,       
 @ISTI_CORR_INEG TD_VC_001,      
 @INUL_CORR_EGRE TD_IN_001,      
 @INUL_CORR_INEG TD_IN_001,      
 @ISCO_ENTR_REND TD_VC_003,      
 @ISCO_UNID_CNTB TD_VC_003,      
 @ISCO_GRUP_CONC TD_VC_020, ---Nuevo campo  
 @ISNU_SOLI   TD_VC_010,      
 @ISCO_SUBR   TD_VC_003,      
 @ISTI_ENTI   TD_VC_001,      
 @ISCO_ENTI   TD_VC_020,      
 @ISDE_NOMB_ORDE TD_VC_100,      
 @ISST_ASTO_RESU TD_VC_001,
 @ISCO_TIPO_DOCU TD_VC_003, 	     
 @ISNU_DOCU_BANC TD_VC_020
      
 as      
   Declare      
   @VNCO_NUEV_NUME TD_IN_001,       
   @VSCO_NUEV_CHAR TD_VC_008,      
   @VNNU_REGI      TD_IN_001,      
   @VNUL_CORR_EGRE TD_IN_001,      
  @VNUL_CORR_AJUS TD_IN_001,       
   @VSST_INTE_BACH TD_VC_001,      
   @VSTI_OPNI_CARG TD_VC_003,      
   @VSTI_OPNI_ABON TD_VC_003,       
   --@OSTI_DOCU_EBSB TD_VC_003,     ---Documento electronico  
   @VSDE_OBSE_CABE TD_VC_050, 
   @VSNU_DOCU_CHEQ TD_VC_020,
   @OSTI_DOCU_CHEQ TD_VC_003, 
   @VSNU_DOCU_BANC TD_VC_020,
   @VDFE_CHEQ  TD_DT_001
      
 BEGIN TRAN SP_TCMOVI_BANC_I01      
      
 /** inserta en la cabecera de bancos **/      
   
 Select  @VSST_INTE_BACH = ST_INTE_BACH,      
 @VSTI_OPNI_CARG = CO_TIPO_OPEG,       
 @VSTI_OPNI_ABON = CO_TIPO_OPER      
 From    TMPARA_TESO       
 Where   CO_EMPR = @ISCO_EMPR      
   
 If Rtrim(@ISCO_ENTR_REND) = ''      
  Select @ISCO_ENTR_REND = NULL      
   
 If @VSST_INTE_BACH = 'N' And  @ISST_ASTO_RESU = 'N' And        
  @ISCO_TIPO_OPER != @VSTI_OPNI_CARG And  @ISCO_TIPO_OPER != @VSTI_OPNI_ABON      
   
  Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_BANC OUTPUT   
   
   
 Else      
 Begin      
  Select  @VNNU_REGI = Count(*)       
  From    TCMOVI_BANC      
  Where   CO_EMPR = @ISCO_EMPR       
  And  CO_BANC = @ISCO_BANC       
  And  NU_CNTA_BANC = @ISNU_CNTA_BANC       
  And  AA_BNCO = @ISAA_BNCO      
  And  MM_BNCO = @ISMM_BNCO       
  And  TI_MOVI_BANC = 'E'        
  And  NU_COMP_BANC = @ISNU_COMP_BANC      
    
  Select @VNCO_NUEV_NUME = Convert(Int , @ISNU_COMP_BANC)      
  Select @VNUL_CORR_AJUS = 0        
    
  If @VNNU_REGI > 0 Or Rtrim(IsNull(@ISNU_COMP_BANC, '')) = ''      
  Begin               
   Select  @VSCO_NUEV_CHAR = IsNull(MAX(NU_COMP_BANC), '0')      
   From    TCMOVI_BANC       
   Where   CO_EMPR = @ISCO_EMPR       
   And  CO_BANC = @ISCO_BANC       
   And  NU_CNTA_BANC = @ISNU_CNTA_BANC       
   And  AA_BNCO = @ISAA_BNCO      
   And  MM_BNCO = @ISMM_BNCO       
   And  TI_MOVI_BANC = 'E'        
   And  NU_COMP_BANC LIKE '000%'      
     
   Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1      
   Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)      
     
   -- RELLENA DE CEROS HASTA 8 CARACTERES       
   Select @VSCO_NUEV_CHAR = IsNull(REPLICATE('0',8- DATALENGTH(LTRIM(Rtrim(@VSCO_NUEV_CHAR)))),'') +LTRIM(Rtrim(@VSCO_NUEV_CHAR))      
     
   Select @ISNU_COMP_BANC = @VSCO_NUEV_CHAR       
     
   If @VNNU_REGI > 0      
   Select @VNUL_CORR_AJUS = 1       
  End      
  
  SELECT @VNUL_CORR_EGRE = @VNCO_NUEV_NUME       
  
 End      
   
 --Busco el tipo de documento 'telecredito, Sudamericano Flag 24'      
 --Select @OSTI_DOCU_EBSB = Null      
 Select @VSDE_OBSE_CABE = Null      
   
 --Exec SP_TTDOCU_CNTB_Q02 24, @OSTI_DOCU_EBSB  OUTPUT    
   
 Exec SP_TTDOCU_CNTB_Q02 29, @OSTI_DOCU_CHEQ  OUTPUT      
 
 IF @ISCO_TIPO_DOCU = @OSTI_DOCU_CHEQ
 BEGIN
	SELECT @VSNU_DOCU_BANC = ''
	SELECT @VSNU_DOCU_CHEQ = @ISNU_DOCU_BANC
	SELECT @VDFE_CHEQ = @IDFE_OPER
 END
 ELSE
 BEGIN
	SELECT @VSNU_DOCU_BANC = @ISNU_DOCU_BANC
	SELECT @VSNU_DOCU_CHEQ = ''
	SELECT @VDFE_CHEQ = NULL
 END
   
 Select   @VSDE_OBSE_CABE = DE_TIPO_OPER      
 From     TTTIPO_OPER      
 Where    CO_EMPR = @ISCO_EMPR      
 And CO_TIPO_OPER = @ISCO_TIPO_OPER      
   
 Insert Into TCMOVI_BANC(      
 CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC,       
 FE_OPER, CO_TIPO_OPER, FA_TIPO_CAMB, IM_MOVI, CO_ENTR_REND, SI_SOLO_BANC, NU_CHEQ_USAD,       
 SI_OPER_CONC, ST_CONT, TI_SITU, CO_UNID_CONC, CO_GRUP_CONC, NU_SOLI, CO_SUBR, CO_TIPO_DOCU, 
 NU_DOCU_BANC, NU_CHEQ, FE_CHEQ,        
 DE_OBSE, TI_ENTI, CO_ENTI, DE_NOMB_ORDE, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)      
 Values (      
 @ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC, @ISNU_COMP_BANC,       
 @IDFE_OPER, @ISCO_TIPO_OPER, @INFA_TIPO_CAMB, @INIM_MOVI, @ISCO_ENTR_REND, @ISSI_SOLO_BANC, NULL,       
 'N', 'N', 'ACT', @ISCO_UNID_CNTB, @ISCO_GRUP_CONC, @ISNU_SOLI, @ISCO_SUBR, @ISCO_TIPO_DOCU ,
 @VSNU_DOCU_BANC, @VSNU_DOCU_CHEQ, @VDFE_CHEQ, 
 @VSDE_OBSE_CABE, @ISTI_ENTI, @ISCO_ENTI, @ISDE_NOMB_ORDE, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())       
   
 If @@error <> 0      
 Begin      
  Rollback tran      
  Return      
 End      
   
 /* ActualizAnd o Estado y Fecha Liquidaci®n Solicitud Caja */      
   
 Update  TMSOLI_CABA       
 Set     TI_SITU = 'LIQ',       
 FE_LIQU = @IDFE_OPER,      
 CO_USUA_MODI = @ISCO_USUA_MODI,       
 FE_USUA_MODI = Getdate()      
 Where   CO_EMPR = @ISCO_EMPR      
 And NU_SOLI = @ISNU_SOLI      
   
 If @@error <> 0      
 Begin      
  rollback tran      
  return      
 End        
   
 /* ----------- Actualiza los Correlativos ------------------ */      
 If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR       
  @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON      
 Begin          
   
  If @ISTI_CORR_INEG = 'N'      
  Begin      
   Select  @INUL_CORR_EGRE = UL_CORR_EGRE  
   From    TMSABA_MENS      
   Where   CO_EMPR = @ISCO_EMPR        
   And CO_BANC = @ISCO_BANC       
   And NU_CNTA_BANC = @ISNU_CNTA_BANC       
   And AA_BNCO = @ISAA_BNCO       
   And MM_BNCO = @ISMM_BNCO       
    
   Update   TMSABA_MENS      
   Set      UL_CORR_EGRE = @INUL_CORR_EGRE + 1 + @VNUL_CORR_AJUS,   
   CO_USUA_MODI = @ISCO_USUA_MODI,       
   FE_USUA_MODI = Getdate()      
   Where    CO_EMPR = @ISCO_EMPR       
   And CO_BANC = @ISCO_BANC       
   And NU_CNTA_BANC = @ISNU_CNTA_BANC       
   And AA_BNCO = @ISAA_BNCO       
   And MM_BNCO = @ISMM_BNCO      
    
   If @@error <> 0      
   Begin      
    Rollback tran      
    Return      
   End      
  End      
  Else      
  Begin      
   Select  @INUL_CORR_INEG = UL_CORR_INEG       
   From    TMSABA_MENS      
   Where   CO_EMPR = @ISCO_EMPR        
   And  CO_BANC = @ISCO_BANC       
   And  NU_CNTA_BANC = @ISNU_CNTA_BANC       
   And  AA_BNCO = @ISAA_BNCO       
   And  MM_BNCO = @ISMM_BNCO       
    
   Update   TMSABA_MENS      
   Set    UL_CORR_INEG = @INUL_CORR_INEG + 1 + @VNUL_CORR_AJUS,       
   CO_USUA_MODI = @ISCO_USUA_MODI,       
   FE_USUA_MODI = GETDATE()      
   Where    CO_EMPR = @ISCO_EMPR       
   And  CO_BANC = @ISCO_BANC       
   And  NU_CNTA_BANC = @ISNU_CNTA_BANC       
   And  AA_BNCO = @ISAA_BNCO       
   And  MM_BNCO = @ISMM_BNCO      
    
   If @@error <> 0      
   Begin      
    Rollback tran      
    Return      
   End      
  End      
 End      
      
Commit Tran      
      
SELECT @ISNU_COMP_BANC      
RETURN      
     
/*------------------------------------- Fin -------------------------------------*/






GO
